package ctrl;
import model.*;

public class DVDCtrl
{
    /**
     * Instance variables
     */
    private DVDCon dc;
    /**
     * Constructor for objects of class Person
     */
    public DVDCtrl()
    {
        /**
         * Her kaldes metode på PersonCon, som laver en ny Personcontainer, 
         * hvis ikke der eksisterer en i forvejen
         */
        dc = dc.getInstance();
    }

    /**
     * Der dannes en ny person på baggrund af brugerens input og den addes til ArrayListen.
     */
    public void createDVD(String barcode, String title, String artist, String publicationDate)
    {

        DVD d = new DVD(barcode, title, artist, publicationDate);

        dc.addDVD(d);
    }

    /**
     * Her kaldes en tideligere metode, som giver mulighed for at finde en DVD.
     */
    public DVD findDVD(String title)
    {
        return dc.findDVD(title);
    }

    /**
     * Denne metode finder en copy, ved søgning på serialNumber
     * @param serialNumber Her bruges serialNumber, til at søge på, for at finde en copy
     * @return Returnerer den funde copy
     */
    public Copy findCopy(String serialNumber)
    {
        return dc.findCopy(serialNumber);
    }

    /**
     * Denne metode fjerner en DVD fra listen.
     */
    public boolean removeDVD(String title)
    {
        DVD d = dc.findDVD(title);
        if(d != null)
        {
            dc.removeDVD(d);
            return true;
        }
        else{
            return false;
        }
    }

    /**
     * Denne metode fjerner en copy fra listen.
     * @Param serialNumber her bruges serialNumber fjerne en copy
     */
    public boolean removeCopy(String serialNumber)
    {
        Copy c = dc.findCopy(serialNumber);
        if(c != null)
        {
            dc.removeCopy(c);
            return true;
        }
        else{
            return false;
        }
    }

    /**
     * Denne metode viser alle DVD'er i listen.
     */
    public void listAllDVDs()
    {
        dc.listDVD();
    }

    /**
     * Denne metode laver en ny copy af en DVD.
     * @param serialNumber Setter serialNumber på en nyoprettet copy
     * purchaseDate Setter purchaseDate på en nyopretter copy
     * purchasePrice Setter purchasePrice på en nyopretter copy
     */
    public void createCopy(DVD d, String serialNumber, String purchaseDate, String purchasePrice)
    {

        Copy c = new Copy(serialNumber, purchaseDate, purchasePrice);
        c.setMyDVD(d);
        d.createCopy(c);

    }
}